package cn.bonoon.handler;

import java.util.List;

import javax.persistence.EntityManager;

import cn.bonoon.entities.plugins.RecycleEntity;

/**
 * 
 * 对具体某个实体进行处理的操作接口
 * 
 * @author jackson
 *
 */
public interface RecycleHandler {

	/**
	 * <pre>
	 * 具体执行删除的方法,由子类决定如何处理回收站实体及需要被删除的实体
	 * 
	 * <font color='red'>
	 * 这个时候你应该很清楚删除这个实体你需要做的事情,比如说:处理该实体与其它实体的关联关系.
	 * 如果你这个时候还不清楚删除这个实体还要做些什么事情,那就是严重的错误了.
	 * </font>
	 * </pre>
	 * @param entityManager
	 * @param entity
	 */
	void delete(EntityManager entityManager, RecycleEntity entity);

	/**
	 * 具体执行恢复的方法,由子类决定如何处理回收站实体及需要被恢复的实体
	 * @param entityManager
	 * @param entity
	 */
	void resume(EntityManager entityManager, RecycleEntity entity);
	
	void delete(EntityManager entityManager, List<RecycleEntity> entitys);
	
	void resume(EntityManager entityManager, List<RecycleEntity> entitys);
}
